10分钟学会R语言
R是一种功能强大的编程语言和环境,专门用于统计计算、数据分析和可视化。本教程将带你快速入门R语言编程。
1. R语言入门
让我们从一个简单的程序开始。打开R或RStudio,输入以下代码:
print("Hello, World!")
你也可以在R控制台中运行这段代码。输出结果将是:
[1] "Hello, World!"
这个简单的程序展示了R的基本输出功能。print()
函数用于在控制台中显示文本信息。
2. 基本语法和变量
R的语法专为统计计算和数据分析而设计。让我们来了解基本的变量赋值和操作。
# 这是一个注释
x <- 5 # 使用 <- 操作符赋值
y = 10 # 使用 = 操作符赋值(较少使用)
print(x + y)
R的基本语法规则:
- 赋值:使用
<-
进行变量赋值(推荐)或=
- 注释:单行注释以
#
开头 - 函数:使用括号
()
调用函数 - 向量化:R是向量化的 - 操作对整个向量起作用
3. 数据类型和结构
R有多种基本数据类型和结构用于统计计算。
3.1 基本数据类型
# 数值型(双精度)
num <- 3.14
print(class(num))
# 整型
int <- 42L
print(class(int))
# 字符型(字符串)
text <- "Hello R"
print(class(text))
# 逻辑型(布尔值)
flag <- TRUE
print(class(flag))
3.2 向量
向量是R中的基本数据结构。它们是一维数组,可以存储数值、字符或逻辑数据。
# 创建向量
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("apple", "banana", "cherry")
logical_vector <- c(TRUE, FALSE, TRUE)
# 向量操作
print(numeric_vector * 2) # 每个元素乘以2
print(numeric_vector + 1) # 每个元素加1
print(length(numeric_vector)) # 获取向量长度
3.3 列表
列表是灵活的容器,可以存储不同类型的元素。
# 创建列表
my_list <- list(
name = "John",
age = 30,
scores = c(85, 92, 78),
active = TRUE
)
# 访问列表元素
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])
3.4 数据框
数据框是R中数据分析最重要的数据结构。它们类似于带有行和列的表。
# 创建数据框
df <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 30, 35),
score = c(88, 92, 85)
)
# 查看数据框
print(df)
print(str(df)) # 数据框结构
print(summary(df)) # 汇总统计
4. 基本操作
R提供了丰富的数学和逻辑操作符。
# 算术运算
a <- 10
b <- 3
print(a + b) # 加法
print(a - b) # 减法
print(a * b) # 乘法
print(a / b) # 除法
print(a ^ b) # 幂运算
print(a %% b) # 取模
print(a %/% b) # 整数除法
# 比较运算
print(a > b) # 大于
print(a == b) # 等于
print(a != b) # 不等于
print(a <= b) # 小于等于
# 逻辑运算
print(TRUE & FALSE) # 与
print(TRUE | FALSE) # 或
print(!TRUE) # 非
5. 控制结构
R提供了标准的控制结构来控制程序流程。
5.1 if语句
age <- 20
if (age >= 18) {
print("成年人")
} else if (age >= 13) {
print("青少年")
} else {
print("儿童")
}
5.2 for循环
# 遍历向量
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
print(fruit)
}
# 使用序列
for (i in 1:5) {
print(paste("数字:", i))
}
5.3 while循环
count <- 1
while (count <= 5) {
print(count)
count <- count + 1
}
6. 函数
R中的函数是用于特定任务的可重用代码块。
# 基本函数定义
calculate_area <- function(length, width) {
area <- length * width
return(area)
}
# 调用函数
result <- calculate_area(5, 3)
print(result)
# 带默认参数的函数
greet <- function(name = "Guest") {
return(paste("Hello,", name))
}
print(greet("Alice"))
print(greet()) # 使用默认参数
7. 数据操作
R在数据操作方面表现出色。让我们探索一些基本操作。
# 示例数据框
students <- data.frame(
name = c("Alice", "Bob", "Charlie", "Diana"),
math_score = c(85, 92, 78, 95),
science_score = c(88, 90, 82, 96),
grade = c("A", "A", "B", "A")
)
# 数据子集
print(students[students$math_score > 85, ]) # 数学成绩大于85的行
print(students[, c("name", "math_score")]) # 特定列
# 添加新列
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2
print(students)
8. 数据可视化
R具有强大的可视化能力,特别是使用ggplot2时。
# 基本绘图(基础R)
# 创建一些示例数据
x <- 1:10
y <- x^2
# 散点图
plot(x, y, main = "散点图", xlab = "X", ylab = "Y", col = "blue", pch = 16)
# 线图
plot(x, y, type = "l", main = "线图", xlab = "X", ylab = "Y", col = "red")
# 直方图
hist(rnorm(100), main = "直方图", xlab = "值", col = "lightblue")
8.1 使用ggplot2(如果已安装)
# 如果尚未安装,安装并加载ggplot2
# install.packages("ggplot2")
library(ggplot2)
# 创建示例数据框
plot_data <- data.frame(
category = c("A", "B", "C", "D"),
value = c(25, 40, 30, 35)
)
# 创建柱状图
ggplot(plot_data, aes(x = category, y = value)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "柱状图示例", x = "类别", y = "值") +
theme_minimal()
9. 统计分析
R专为统计计算而设计。以下是一些基本的统计函数。
# 示例数据
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)
# 基本统计量
print(mean(data)) # 均值
print(median(data)) # 中位数
print(sd(data)) # 标准差
print(var(data)) # 方差
print(min(data)) # 最小值
print(max(data)) # 最大值
print(summary(data)) # 五数概括
# 相关性
x <- 1:10
y <- x + rnorm(10) # 添加一些噪声
print(cor(x, y)) # 相关系数
# 线性回归
model <- lm(y ~ x)
print(summary(model))
10. 文件操作
R提供了读写文件的函数。
# 写入文件
write.csv(students, "students.csv", row.names = FALSE)
# 从文件读取
# read_data <- read.csv("students.csv")
# print(read_data)
# 处理文本文件
# writeLines(c("第一行", "第二行", "第三行"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)
11. 包和库
R的强大之处在于其丰富的包生态系统。
# 安装包
# install.packages("dplyr") # 用于数据操作
# install.packages("ggplot2") # 用于可视化
# 加载包
library(dplyr)
library(ggplot2)
# 使用dplyr进行数据操作
# students %>%
# filter(math_score > 85) %>%
# select(name, math_score) %>%
# arrange(desc(math_score))
12. 错误处理
R提供了错误处理机制。
# 基本错误处理
tryCatch({
result <- 10 / 0
print(result)
}, error = function(e) {
print(paste("发生错误:", e$message))
}, finally = {
print("这部分总是执行")
})
# 使用try()
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
print("除法失败")
}
13. 高级主题
13.1 Apply系列函数
Apply系列函数对于向量化操作非常强大。
# 创建矩阵
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)
# 应用函数
print(apply(mat, 1, mean)) # 行均值
print(apply(mat, 2, sum)) # 列总和
# 对列表使用lapply
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean)) # 每个列表元素的均值
# sapply(简化版本)
print(sapply(my_list, mean))
13.2 字符串操作
text <- "Hello R Programming"
print(toupper(text)) # 转换为大写
print(tolower(text)) # 转换为小写
print(nchar(text)) # 字符计数
print(substr(text, 1, 5)) # 提取子字符串
# 使用stringr包(如果已安装)
# library(stringr)
# str_split(text, " ") # 分割字符串
13.3 日期和时间
# 当前日期和时间
current_time <- Sys.time()
print(current_time)
# 格式化日期
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)
# 日期运算
today <- Sys.Date()
future_date <- today + 30
print(future_date)
14. 最佳实践
以下是一些编写更好R代码的建议:
- 使用有意义的变量名
- 适当注释你的代码
- 尽可能使用向量化操作而不是循环
- 在脚本开头加载包
- 使用一致的缩进(推荐2个空格)
- 使用示例数据测试代码
- 为项目使用版本控制
15. 下一步
要继续学习R:
- 实践:完成小型数据分析项目
- 探索包:学习dplyr、ggplot2、tidyr和其他重要包
- 在线资源:使用R文档、Stack Overflow和R-bloggers
- 书籍:Hadley Wickham的《R数据科学》
- 课程:参加使用R进行数据分析的在线课程
R是统计计算和数据分析的强大工具。通过实践,你将能够执行复杂的数据操作、创建精美的可视化图表并进行复杂的统计分析。